Thiết kế Visitor pattern

Thiết kế của mẫu visitor gồm 3 phần:

Các lớp visitor

Các lớp visitor định nghĩa các thao tác tương tác trên các đối tượng. Các lớp này là cài đặt của một giao diện chung là VisitorInterface trong đó định nghĩa các phương thức dạng visit(ObjectType object),với mỗi kiểu (lớp) của các đối tượng ta có một phương thức visit với tham số truyền vào là một thực thể của kiểu đó. Mỗi phương thức như thế có nhiệm vụ xử lý trên các thực thể của lớp tương ứng.Ví dụ ta có tập hợp các đối tượng là các thực thể của hai kiểu(lớp) ClassA và ClassB thì VisitorInterface sẽ bao gồm hai phương thức:

visit(ClassA obj)visit(ClassB obj)

Các lớp của các đối tượng trong tập hợp các đối tượng

Để các thao tác định nghĩa trong các lớp visitor có thể thực hiện được, các lớp của các đối tượng trong tập hợp các đối tượng cần cài đặt giao diện Visitable trong đó có một phương thức accept(VisitorInterface visitor). Trong cài đặt của phương thức này ta gọi hàm visit của visitor với tham số truyền vào chính là đối tượng gọi:

public void accept(VisitorInterface visitor){ visitor.visit(this);}

Client

Các client muốn thực thi thao tác của visitor trên tập hợp các đối tượng cần phải tạo ra một thực thể của lớp vistor tương ứng với thao tác đó, và sau đó gọi phương thức accept của từng đối tượng trong tập hợp các đối tượng với tham số là thực thể visitor vừa tạo ra. (Xem ví dụ để hiểu rõ hơn)